package org.springframework.parser;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

import java.io.IOException;
import java.io.InputStream;

/**
 * 负责解析Spring配置文件applicationContext.xml
 */
public class SpringConfigParser {
    /**
     * 解析配置文件获取要扫描的包
     * @return
     */
    public static String getComponentScanPackage(String springConfig){
        InputStream iputStream = SpringConfigParser.class.getClassLoader().getResourceAsStream(springConfig);
        // 使用DOM4J解析配置文件
        try {
        SAXReader saxReader = new SAXReader();
        Document document = saxReader.read(iputStream);
        // xml的根节点
        Element rootElement = document.getRootElement();
        // 可以根据这个方法得到标签名对应的标签 此方法如果有多个标签会报错
        Element element = rootElement.element("component-scan");
        // 根据属性名称拿到当前标签中该属性
        Attribute attribute = element.attribute("base-package");
        // 解析完xml中后取到要扫描的包并返回
        return attribute.getValue();
        } catch (DocumentException e) {
            e.printStackTrace();
        }finally {
            try {
                iputStream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }finally {

            }
        }
        // 返回空字符串代表没解析到xml
        return "";
    }


}
